package cn.xopencode.appletweb.controller.record.sf6machine;

import cn.xopencode.common.framework.vo.CommonResult;
import cn.xopencode.common.framework.vo.PageResult;
import cn.xopencode.recordservice.rpc.sf6machine.Sf6MachineRecordRpc;
import cn.xopencode.recordservice.rpc.sf6machine.dto.*;
import cn.xopencode.recordservice.rpc.sf6machine.vo.Sf6MachineRecordCreateVO;
import cn.xopencode.recordservice.rpc.sf6machine.vo.Sf6MachineRecordNextVO;
import cn.xopencode.recordservice.rpc.sf6machine.vo.Sf6MachineRecordPageVO;
import cn.xopencode.recordservice.rpc.sf6machine.vo.Sf6MachineRecordVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

@Api(tags = "SF6气体密度继电器巡检记录 API")
@RestController
@RequestMapping("/sf6machine")
@Validated
public class Sf6MachineRecordController {

    @DubboReference(version = "${dubbo.consumer.Sf6MachineRecordRpc.version}")
    private Sf6MachineRecordRpc sf6MachineRecordRpc;

    /**
     * 根据查询条件 分页获取所有的SF6气体密度继电器巡检记录
     * @param dto
     * @return
     */
    @PostMapping("/getAllByQuery")
    @ApiOperation("根据查询条件分页获取所有的智能机器人班机柜间巡检记录")
    public CommonResult<PageResult<Sf6MachineRecordPageVO>> getPageSf6MachineRecord(Sf6MachineRecordDTO dto){
        return sf6MachineRecordRpc.pageSf6MachineRecord(dto);
    }

    /**
     *  新增 SF6气体密度继电器巡检记录
     * @param createDTO
     * @return
     */
    @PostMapping("/add")
    @ApiOperation("新增 SF6气体密度继电器巡检记录")
    public CommonResult<Sf6MachineRecordCreateVO> createSf6MachineRecord(@Valid Sf6MachineRecordCreateDTO createDTO){
        return sf6MachineRecordRpc.createSf6MachineRecord(createDTO);
    }

    /**
     *  新增 SF6气体密度继电器巡检记录 中的下一组数据
     * @param nextCreateDTO
     * @return
     */
    @PostMapping("/addNextLine")
    @ApiOperation("新增 SF6气体密度继电器巡检记录 下一组数据")
    public CommonResult<Integer> createSf6MachineRecordNextLine(@Valid Sf6MachineRecordNextCreateDTO nextCreateDTO){
        //下一组保存时需要检查是否重复
        return sf6MachineRecordRpc.createSf6MachineRecordNextLine(nextCreateDTO);
    }


    /**
     * 根据id获取SF6气体密度继电器巡检记录详细
     * @param recordId
     * @return
     */
    @GetMapping("/getById")
    @ApiOperation("根据id获取SF6气体密度继电器巡检记录详细")
    public CommonResult<Sf6MachineRecordVO> getSf6MachineRecordById(@RequestParam(required = true) String recordId){
        return sf6MachineRecordRpc.getSf6MachineRecordById(recordId);
    }

    /**
     * 根据记录标识、下一组的排序，获取SF6气体密度继电器巡检记录中下一组的详细
     * @param recordCode
     * @param recordSeq
     * @return
     */
    @GetMapping("/getNextById")
    @ApiOperation("根据记录标识、下一组的排序，获取SF6气体密度继电器巡检记录中下一组的详细")
    public CommonResult<Sf6MachineRecordNextVO> getSf6MachineRecordNextById(@RequestParam(required = true) String recordCode, @RequestParam(required = true) Integer recordSeq){
       return sf6MachineRecordRpc.getSf6MachineRecordNextById(recordCode, recordSeq);
    }

    /**
     *  更新 SF6气体密度继电器巡检记录
     * @param updateDTO
     * @return
     */
    @PostMapping("/update")
    @ApiOperation("更新 SF6气体密度继电器巡检记录")
    public CommonResult<Integer> updateSf6MachineRecord(@Valid Sf6MachineRecordUpdateDTO updateDTO){
        return sf6MachineRecordRpc.updateSf6MachineRecord(updateDTO);
    }

    /**
     *  更新 SF6气体密度继电器巡检记录 中的下一组数据
     * @param nextUpdateDTO
     * @return
     */
    @PostMapping("/udpateNextLine")
    @ApiOperation("更新 SF6气体密度继电器巡检记录 下一组数据")
    public CommonResult<Integer> updateSf6MachineRecordNextLine(@Valid Sf6MachineRecordNextUpdateDTO nextUpdateDTO){
        //下一组保存时需要检查是否重复
        return sf6MachineRecordRpc.updateSf6MachineRecordNextLine(nextUpdateDTO);
    }

    /**
     * 处理 SF6气体密度继电器巡检记录 中的异常，在巡检记录中只是改变状态
     * @param recordDetailId
     * @return
     */
    @PostMapping("/deal")
    @ApiOperation("处理 SF6气体密度继电器巡检记录 中的异常")
    public CommonResult<Integer> dealSf6MachineRecordLineException(@RequestParam(required = true) String recordDetailId){
        return sf6MachineRecordRpc.dealSf6MachineRecordLineException(recordDetailId);
    }
}
